package actions;

import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import modelo.Usuario;
import DAO.FactoryDAO;
import DAO.UsuarioDAO;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class RegistroUsuario extends ActionSupport implements SessionAware {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String name;
	private String clave;
	private String nombre;
	private String apellido;
	private String claveConfirmacion;
	private String telefono;
	private String email;
	private Usuario user = new Usuario();
	private UsuarioDAO userDAO = FactoryDAO.getUsuarioDAO();
	private Map<String, Object> session;

	public String execute() {
		if (getClave().equals(getClaveConfirmacion())) {
			user = userDAO.crearUsuario(name,clave,telefono,email,nombre,apellido);
			userDAO.guardar(user);
			session=ActionContext.getContext().getSession();
			session.put("logged-in", "true");
			session.put("id", user.getId());
			session.put("usuario", user);
			session.put("contenido", "/jsp/contenido/tablaTesinasFront.jsp");
			session.put("primeraVes", true);
		}
		return "SUCCESS";

	}

	public void validate() {
		if (getClave().compareTo("") != 0
				&& getClaveConfirmacion().compareTo("") != 0) {
			if (getClave().compareTo(getClaveConfirmacion()) != 0) {
				addFieldError("clave",
						getText("global.claveDestintaConfirmacion"));
			}else if (getName().compareTo("") != 0) {
				UsuarioDAO uDAO = FactoryDAO.getUsuarioDAO();
				if (uDAO.existe(getName())) {
					addFieldError("name", getText("global.usuarioNombreExiste"));
				}
			}
		}

		if (getName().equals("") && getClave().equals("")
				&& getClaveConfirmacion().equals("")) {
			addFieldError("name", getText("global.composRequeridosVacio"));
		} else if (getName().equals("") || getClave().equals("")
				|| getClaveConfirmacion().equals("")) {
			if (getName().equals("")) {
				addFieldError("name", getText("global.usuarioVacio"));
			}
			if (getClave().equals("")) {
				addFieldError("clave", getText("global.claveVacia"));
			}
			if (getClaveConfirmacion().equals("")) {
				addFieldError("claveConfirmacion",
						getText("global.claveConfirmacionVacio"));
			}
		}

	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getClave() {
		return clave;
	}

	public void setClave(String clave) {
		this.clave = clave;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getClaveConfirmacion() {
		return claveConfirmacion;
	}

	public void setClaveConfirmacion(String claveConfirmacion) {
		this.claveConfirmacion = claveConfirmacion;
	}

	@Override
	public void setSession(Map<String, Object> arg0) {
		// TODO Auto-generated method stub

	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

}
